package com.itheima.a04mytreemap;

import java.util.StringJoiner;
import java.util.TreeMap;
import java.util.function.BiConsumer;

public class A03_TreeMapDemo3 {
    public static void main(String[] args) {
        /*
        需求：
            字符串：aababcabcdabcde
            统计字符串中每个字符出现的次数
            输出结果：
            a(5)b(4)c(3)d(2)e(1)
        分析：
            1.定义字符串
            2.创建TreeMap集合对象
            3.遍历字符串
            4.获取字符
            5.判断字符是否在TreeMap集合中
            6.如果在,获取字符的次数
            7.次数+1
            8.将字符和次数添加到TreeMap集合中
            9.如果不在,将字符和1添加到TreeMap集合中
            10.打印TreeMap集合
            11.遍历TreeMap集合，按照指定的格式进行拼接
        */

        //1.定义字符串
        String s = "aababcabcdabcde";

        //2.创建TreeMap集合对象
        TreeMap<Character, Integer> tm = new TreeMap<>();

        //3.遍历字符串
        for (int i = 0; i < s.length(); i++) {
            //4.获取字符
            char c = s.charAt(i);

            //5.判断字符是否在TreeMap集合中
            if (tm.containsKey(c)) {
                //6.如果在,获取字符的次数
                Integer count = tm.get(c);
                //7.次数+1
                count++;
                //8.将字符和次数添加到TreeMap集合中
                tm.put(c, count);
            } else {
                //9.如果不在,将字符和1添加到TreeMap集合中
                tm.put(c, 1);
            }
        }

        //10.打印TreeMap集合
        //System.out.println(tm);

        //11.遍历TreeMap集合，按照指定的格式进行拼接
        // a(5)b(4)c(3)d(2)e(1)

        //方式一：
        /*StringBuilder sb = new StringBuilder();
        tm.forEach((character, integer) -> sb.append(character).append("(").append(integer).append(")"));
        System.out.println(sb);*/

        //方式二：StringJoiner
        /*StringJoiner sj = new StringJoiner("");
        tm.forEach((character, integer) -> sj.add(character + "(" + integer + ")"));
        System.out.println(sj);*/
    }
}
